/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.text;

import java.util.HashMap;
import java.util.Map;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.SVG;

/**
 *
 * @author nt
 */
public interface _TextContentProperties {

    final Map<String, String> INTERFACE_ATTRIBUTES = new HashMap<String, String>(0x9) {

        {
            put(SVG.DIRECTION_PROP, SVG.DIRECTION_PROP);
            put(SVG.GLYPH_ORIENTATION_HORIZONTAL_PROP, SVG.GLYPH_ORIENTATION_HORIZONTAL_ATTR);
            put(SVG.GLYPH_ORIENTATION_VERTICAL_PROP, SVG.GLYPH_ORIENTATION_VERTICAL_ATTR);
            put(SVG.KERNING_PROP, SVG.KERNING_PROP);
            put(SVG.LETTER_SPACING_PROP, SVG.LETTER_SPACING_ATTR);
            put(SVG.TEXT_ANCHOR_PROP, SVG.TEXT_ANCHOR_ATTR);
            put(SVG.TEXT_DECORATION_PROP, SVG.TEXT_DECORATION_ATTR);
            put(SVG.UNICODE_BIDI_PROP, SVG.UNICODE_BIDI_ATTR);
            put(SVG.WORD_SPACING_PROP, SVG.WORD_SPACING_ATTR);
        }
    };

    /**
     * Value: ltr | rtl | inherit
     *<br/>
     * This property specifies the base writing direction of text and the
     * direction of embeddings and overrides (see ‘unicode-bidi’) for the
     * Unicode bidirectional algorithm. For the ‘direction’ property to have any
     * effect on an element that does not by itself establish a new text chunk
     * (such as a ‘tspan’ element without absolute position adjustments due to
     * ‘x’ or ‘y’ attributes), the ‘unicode-bidi’ property's value must be embed
     * or bidi-override.
     */
    @JSFProperty
    String getDirection();

    /**
     * Value: &lt;angle&gt; | inherit
     *<br/>
     * angle ::= number (~"deg" | ~"grad" | ~"rad")?
     *<br/>
     * The value of the angle is restricted to 0, 90, 180, and 270 degrees. The
     * user agent shall round the value of the angle to the closest of the
     * permitted values. A value of 0deg indicates that all glyphs are set with
     * the top of the glyphs oriented towards the reference orientation. A value
     * of 90deg indicates an orientation of 90 degrees clockwise from the
     * reference orientation.
     *<br/>
     * Animatable: no
     */
    @JSFProperty
    String getGlyphOrientationHorizontal();

    /**
     * Value: auto | &lt;angle&gt; | inherit
     *<br/>
     * angle ::= number (~"deg" | ~"grad" | ~"rad")?
     *<br/>
     * The value of the angle is restricted to 0, 90, 180, and 270 degrees. The
     * user agent shall round the value of the angle to the closest of the
     * permitted values. A value of 0deg indicates that all glyphs are set with
     * the top of the glyphs oriented towards the reference orientation. A value
     * of 90deg indicates an orientation of 90 degrees clockwise from the
     * reference orientation.
     *<br/>
     * Animatable: no
     */
    @JSFProperty
    String getGlyphOrientationVertical();

    /**
     * Value: auto | &lt;length&gt; | inherit
     *<br/>
     * The value of auto indicates that the user agent should adjust inter-glyph
     * spacing based on kerning tables that are included in the font that will
     * be used (i.e., enable auto-kerning).
     *<br/>
     * If a &lt;length&gt; is provided, then auto-kerning is disabled. Instead,
     * inter-character spacing is set to the given &lt;length&gt;. The most common
     * scenario, other than auto, is to set ‘kerning’ to a value of 0 so that
     * auto-kerning is disabled.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getKerning();

    /**
     * Value: normal | &lt;length&gt; | inherit
     *<br/>
     * This property specifies spacing behavior between text characters
     * supplemental to any spacing due to the ‘kerning’ property.
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getLetterSpacing();

    /**
     * Value: start | middle | end | inherit
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getTextAnchor();

    /**
     * Value: none | [ underline || overline || line-through || blink ] |
     * inherit
     *<br/>
     * This property describes decorations that are added to the text of an
     * element. Conforming SVG Viewers are not required to support the blink
     * value.
     *<br/>
     * Except for any additional information provided in this specification, the
     * normative definition of the property is in CSS2
     * ([<a href="http://www.w3.org/TR/SVG/refs.html#ref-CSS2">CSS2<a/>], section 16.3.1).
     *<br/>
     * Animatable: yes
     */
    @JSFProperty
    String getTextDecoration();

    /**
     * Value: normal | embed | bidi-override | inherit
     *<br/>
     * Except for any additional information provided in this specification, the
     * normative definition of the ‘unicode-bidi’ property is in CSS2
     * ([<a href="http://www.w3.org/TR/SVG/refs.html#ref-CSS2">CSS2<a/>], section 9.10).
     *<br/>
     * Animatable: no
     */
    @JSFProperty
    String getUnicodeBidi();

    /**
     * Value: normal | &lt;length&gt; | inherit
     *<br/>
     * See http://www.w3.org/TR/SVG/text.html#WordSpacingProperty
     */
    @JSFProperty
    String getWordSpacing();
}
